home *** CD-ROM | disk | FTP | other *** search
/ Komputer for Alle 2002 #4 / K-CD-4-2002.ISO / Empire Earth / EEDemo.exe / Disk1 / data.ssa / unit ai scripts_priest.tai < prev    next >
Encoding:
Text File  |  2001-09-29  |  3.8 KB  |  128 lines

  1. //
  2. // Priest unit AI file
  3. //
  4. // Behaviors:
  5. //
  6. //        At players request, convert enemy units.
  7. //
  8. //    Notes:
  9. //
  10. //        Add transition from Idle when enemies spotted to flee.
  11. //
  12. //    Known Problems:
  13. //
  14.  
  15. Idle
  16. {
  17.     CanISeeEnemy true(CheckRange)
  18.     AmIUnderAttack true(UnderAttack)
  19. }
  20.  
  21. FaceEnemyUnit
  22. {
  23.     allof(AmIUnderAttack,GoalIsNotPlayerInitiated,CanFlee) true(RunFromAttacker)
  24.     anyof(EnemyUnitDestroyed,CeaseFire,UnitNotOnMap,EnemyWithinMinimumRange) true(ShouldIReturnToInitialContactLocation)
  25.     allof(EnemyUnitNoLongerVisible,GoalIsNotPlayerInitiated) true(ShouldIReturnToInitialContactLocation)
  26.     UnitInWeaponRange false(ShouldIFollowEnemyUnit)
  27.     FacingEnemyUnit true(ConvertEnemyUnit)    
  28. }
  29.  
  30. ShouldIFollowEnemyUnit
  31. {
  32.     // these two need to be ordered this way: 2nd statement is TRUE case of first statement 
  33.     anyof(CanIMoveFreely,GoalIsPlayerInitiated) false(ShouldIReturnToInitialContactLocation)
  34.     anyof(CanIPursuePastInitialContactLOS,EnemyInsideInitialContactLOS,GoalIsPlayerInitiated) true(PrepareToMove) false(ShouldIReturnToInitialContactLocation)
  35. }
  36.  
  37. ShouldIReturnToInitialContactLocation
  38. {
  39.     allof(HasValidInitialContactLocation,ReturnsToInitialContactLocation,GoalIsNotPlayerInitiated) true(ReturnToInitialContactLocation) false(Idle)
  40. }
  41.  
  42. ReturnToInitialContactLocation
  43. {
  44.     AlwaysTrue true(PrepareToMove)
  45. }
  46.  
  47. ReacquireGoal
  48. {
  49.     GoalIsConversion true(ConvertEnemyUnit) 
  50. }
  51.  
  52. // is the target in weapon range already?
  53. CheckRange
  54. {
  55.     anyof(EnemyUnitDestroyed,CeaseFire,UnitNotOnMap,EnemyWithinMinimumRange) true(ShouldIReturnToInitialContactLocation)
  56.     allof(EnemyUnitNoLongerVisible,GoalIsNotPlayerInitiated) true(ShouldIReturnToInitialContactLocation)
  57.     UnitInWeaponRange true(ConvertEnemyUnit) false(ShouldIFollowEnemyUnit)
  58. }
  59.  
  60. ConvertEnemyUnit
  61. {
  62.     // allof(AmIUnderAttack,GoalIsNotPlayerInitiated,CanFlee) true(RunFromAttacker)
  63.     EnemyUnitDestroyed true(ShouldIReturnToInitialContactLocation)
  64.     EnemyUnitConverted true(FindSafeLocation)
  65.     ConvertGoalStillValid false(ShouldIReturnToInitialContactLocation)
  66.     UnitInWeaponRange false(ShouldIFollowEnemyUnit)
  67.     EnemyUnitInsideFiringArch false(FaceEnemyUnit)
  68.     Reloaded false(WaitForReload)    
  69. }
  70.  
  71. PrepareToMove
  72. {
  73.     EnemyUnitDestroyed true(ShouldIReturnToInitialContactLocation)
  74. }
  75.  
  76. Advance
  77. {
  78.     EnemyUnitDestroyed true(ShouldIReturnToInitialContactLocation)
  79.     EnemyUnitConverted true(FindSafeLocation)
  80.     allof(GoalIsConversion,UnitInWeaponRange) true(ConvertEnemyUnit)
  81. }
  82.  
  83. FindSafeLocation
  84. {
  85.     CanITargetEnemies true(ShouldIReturnToInitialContactLocation)
  86.     SafeLocationFound false(ShouldIReturnToInitialContactLocation)
  87. }
  88.  
  89. WaitForReload
  90. {
  91.     allof(AmIUnderAttack,GoalIsNotPlayerInitiated,CanFlee) true(RunFromAttacker)
  92.     EnemyUnitDestroyed true(ShouldIReturnToInitialContactLocation)
  93.     ConvertGoalStillValid false(ShouldIReturnToInitialContactLocation)
  94.     Reloaded true(ConvertEnemyUnit)
  95.     UnitInWeaponRange false(ShouldIFollowEnemyUnit)    
  96. }
  97.  
  98. InitialAttackState
  99. {
  100.     //Reloaded            false(WaitForReload)
  101.     GoalIsConversion    true(ConvertEnemyUnit)
  102.     // we shouldn't hit this trigger, but just in case... 
  103.     AlwaysTrue            true(ShouldIReturnToInitialContactLocation)
  104. }
  105.  
  106. ReacquireEnemyUnit
  107. {
  108.     EnemyUnitReachable true(CheckRange) false(ShouldIReturnToInitialContactLocation)
  109. }
  110.  
  111. UnderAttack
  112. {
  113.     // allof(CanITargetEnemies,EnemyIsBuilding,TargetIsNotDefensiveBuilding,IsAttackerInRetaliationRange,CanDamageAttacker,AttackerIsReachable) true(RetaliateAgainstAttacker)
  114.     allof(CanDamageAttacker,HasEnoughManaForConversion,IsAttackerInRetaliationRange,AttackerIsLegalConversionTarget,AttackerIsReachable) true(RetaliateAgainstAttacker) 
  115.     CanFlee true(RunFromAttacker)
  116.     UnitHasGoal true(ReacquireGoal)
  117. }
  118.  
  119. RunFromAttacker
  120. {
  121.     AlwaysTrue true(PrepareToMove)
  122. }
  123.  
  124. RetaliateAgainstAttacker
  125. {
  126.     GoalIsUnit true(CheckRange) false(PrepareToMove)
  127. }
  128.